package me.dqn.proccesor;

import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * @author dqn
 * created at 2018/8/10 - 16:37
 * 封装被调用的原来的方法，
 * 包括所属对象、方法、方法的参数。
 * 在around的切面中被调用。
 */
public class ProcessJoinPoint {
    private MethodProxy method;
    private Object[] args;
    private Object target;

    public ProcessJoinPoint(Object target, MethodProxy method, Object[] args){
        this.args = args;
        this.method = method;
        this.target = target;
    }

    /**
     * 执行原来的任务
     * @return
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    public Object process() throws Throwable {
        return method.invokeSuper(target,args);
    }
}
